/**
 * 数据库管理相关类型定义
 */

/** 数据库类型枚举 */
export enum DatabaseType {
  MYSQL = "MYSQL",
  POSTGRESQL = "POSTGRESQL",
  ORACLE = "ORACLE",
  SQL_SERVER = "SQL_SERVER"
}

/** 数据库连接请求参数 */
export interface DatabaseConnectionRequest {
  /** 数据库类型 */
  databaseType: DatabaseType
  /** 数据库主机地址 */
  host: string
  /** 数据库端口 */
  port: number
  /** 数据库名称 */
  database: string
  /** 数据库用户名 */
  username: string
  /** 数据库密码 */
  password?: string
  /** 字符集 */
  charset?: string
  /** 连接超时时间(秒) */
  timeout?: number
  /** 是否使用SSL */
  useSSL?: boolean
  /** 表名过滤(支持通配符) */
  tableFilter?: string
  /** 连接参数(JSON格式) */
  connectionParams?: string
}

/** 数据库字段信息 */
export interface DatabaseFieldVO {
  /** 字段ID */
  fieldId: number
  /** 字段名称 */
  fieldName: string
  /** 字段类型 */
  fieldType: string
  /** 字段长度 */
  fieldLength: number
  /** 字段精度 */
  fieldPrecision: number
  /** 字段小数位 */
  fieldScale: number
  /** 是否可空 */
  isNullable: boolean
  /** 是否主键 */
  isPrimaryKey: boolean
  /** 是否自增 */
  isAutoIncrement: boolean
  /** 是否唯一 */
  isUnique: boolean
  /** 默认值 */
  defaultValue: string
  /** 字段注释 */
  fieldComment: string
  /** 排序 */
  sortOrder: number
  /** Java类型 */
  javaType: string
  /** JDBC类型 */
  jdbcType: string
}

/** 数据库索引信息 */
export interface DatabaseIndexVO {
  /** 索引名称 */
  indexName: string
  /** 索引类型 */
  indexType: string
  /** 是否唯一 */
  isUnique: boolean
  /** 索引字段 */
  indexColumns: string
  /** 索引注释 */
  indexComment: string
}

/** 数据库表信息 */
export interface DatabaseTableVO {
  /** 表ID */
  tableId: number
  /** 表名称 */
  tableName: string
  /** 表描述 */
  tableComment: string
  /** 表类型 */
  tableType: string
  /** 存储引擎 */
  engine: string
  /** 字符集 */
  charset: string
  /** 排序规则 */
  collation: string
  /** 自增起始值 */
  autoIncrement: number
  /** 所属项目ID */
  projectId: number
  /** 所属项目名称 */
  projectName: string
  /** 创建者ID */
  creatorId: number
  /** 创建者名称 */
  creatorName: string
  /** 创建时间 */
  createTime: string
  /** 更新时间 */
  updateTime: string
  /** 字段数量 */
  fieldCount: number
  /** 索引数量 */
  indexCount: number
  /** 数据行数 */
  dataRows: number
  /** 表大小(KB) */
  tableSize: number
  /** 数据表字段信息 */
  fields: DatabaseFieldVO[]
  /** 数据表索引信息 */
  indexes: DatabaseIndexVO[]
}

/** 表导入请求参数 */
export interface TableImportRequest {
  /** 所属项目ID */
  projectId: number
  /** 要导入的表名列表 */
  tableNames: string[]
  /** 是否覆盖已存在的表 */
  overwrite?: boolean
  /** 是否导入表关联关系 */
  importRelations?: boolean
  /** 是否导入索引信息 */
  importIndexes?: boolean
  /** 表名前缀过滤 */
  prefixFilter?: string
  /** 表名后缀过滤 */
  suffixFilter?: string
}

/** 分页查询参数 */
export interface DatabaseTablePageQuery {
  /** 项目ID */
  projectId?: number
  /** 当前页 */
  current?: number
  /** 每页大小 */
  size?: number
  /** 表名筛选 */
  tableName?: string
}

/** 数据库连接测试响应 */
export interface DatabaseConnectionTestResponse {
  /** 连接是否成功 */
  success: boolean
  /** 响应消息 */
  message: string
  /** 数据库产品名称 */
  databaseProductName?: string
  /** 数据库产品版本 */
  databaseProductVersion?: string
  /** 驱动名称 */
  driverName?: string
  /** 驱动版本 */
  driverVersion?: string
  /** 连接URL */
  url?: string
  /** 用户名 */
  userName?: string
}